package com.yztctech.android11_04_popupwindow;

import android.graphics.drawable.ColorDrawable;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.PopupWindow;
import android.widget.TextView;

/**
 * 演示PopupWindow的使用-------------》可以使用放在任意的地方，
 * 备注:
 * 1. popupwidnow 会堵塞线程
 */
public class MainActivity extends AppCompatActivity implements View.OnClickListener{

    private PopupWindow cityPopupWindow;//单独的一个对象 很强！！

    private Button cityButton, centerButton;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initView();

        initPopupWindow();
    }

    private void initView() {//----------这个方法就是干屏幕初次显现在面前的静态、监听状态！！
        cityButton = (Button)findViewById(R.id.btn_select_city);
        centerButton = (Button)findViewById(R.id.btn_center);
        cityButton.setOnClickListener(this);
        centerButton.setOnClickListener(this);
    }

    /**
     * 备注:
     * 1. popupwindow相当于一个可以承载view的容器,可以设计一个锚点
     * 2. fragment使用popupwindow的时候需要注意一点,其实我到觉得所有的pop都在Activity中设置比较方便,可以复用
     * */
    private void initPopupWindow() {
        View view = getLayoutInflater().inflate(R.layout.view_citys, null, false);//没有父控件、不需要关联
        //可以通过view 实例化里边的控件
        TextView tv_bj = (TextView) view.findViewById(R.id.tv_bj);
        //创建PopupWindow实例
        cityPopupWindow = new PopupWindow(
			view, //view
			200, //宽
			ViewGroup.LayoutParams.WRAP_CONTENT//高-----viewgroup的属性
			);
        // 设置触摸外面时消失-----------》两个一起用 小bug
        cityPopupWindow.setBackgroundDrawable(new ColorDrawable());
        cityPopupWindow.setOutsideTouchable(true);
    }

    @Override//---------------->监听触发事件
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.btn_select_city:
                if (cityPopupWindow.isShowing()) {
                    cityPopupWindow.dismiss();//------------>>消失
                } else {
                    // 在某个控件的下方展示
                    cityPopupWindow.showAsDropDown(view);
                    cityPopupWindow.showAsDropDown(view, 100, 100);//-----》注意这里的偏移量是顺着X Y轴的方向的，
                }
                break;
            case R.id.btn_center:
                if (cityPopupWindow.isShowing()) {
                    cityPopupWindow.dismiss();
                } else {
                    // 在屏幕中心显示
                    cityPopupWindow.showAtLocation(view, Gravity.CENTER, 0, 0);
                }
                break;
        }
    }
}
